<?php
namespace app\admin\model;

class Option extends Base
{
    /**
     * 获取一个经过处理的结果数组
     * @return array
     */
    public function getList(){
        $list = $this->select();
        if(empty($list))
            return $list;
        $list = $this->forJsonDecode($list, ['item', 'value']);
        return $list;
    }

    /**
     * 添加一个配置组
     * @return mixed
     */
    public function addOption(){
        $name = I('post.name');
        $flag = I('post.flag');
        if(empty($name)|| empty($flag))
            return false;
        $add = [
            'name'  =>  $name,
            'flag'  =>  $flag,
            'item'  =>  json_encode([]),
            'value' =>  json_encode([]),
            'autoload'  =>  1,
        ];
        return $this->add($add);
    }

    /**
     * 为某个配置组添加一个配置项
     * @return mixed
     */
    public function addItem($id){
        if(empty($id))
            return false;
        $tag = I('post.tag');
        $tagName = I('post.name');
        $tagType = I('post.type');
        //检测参数是否有空
        if(empty($tag)||empty($tagName)||empty($tagType))
            return false;
        $info = $this->find($id);
        $info['item'] = $this->jsonAppend($info['item'],
            $tag, ['tag_name'=>$tagName, 'tag_type'=>$tagType]);
        if(!$info['item'])
            return false;
        return $this->save($info);
    }

    /**
     * 为某个配置组删除一个配置项
     * @return mixed
     */
    public function delItem($id, $tag)
    {
        //id为空则不进行任何操作
        if(empty($id)|| empty($tag))
            return false;
        $optionInfo       = $this->field('item')->find($id);
        $tagList    = json_decode($optionInfo['item'], true);
        if(empty($tagList[$tag]))
            return false;
        unset($tagList[$tag]);
        $optionInfo['item'] = json_encode($tagList);
		return $this->where(['id'=>$id])->save($optionInfo);
    }

    /**
     * 删除一个配置组
     * @return mixed
     */
    public function delOption($id)
    {
        if(empty($id))
            return false;
        return $this->delete($id);
    }

    /**
     * 编辑一个配置组的配置
     * @return mixed
     */
    public function setValue($id)
    {
        if(empty($id))
            return false;
        $value = $_POST[$id];
        $save['value'] = json_encode($value);
        return $this->where(['id'=>$id])->save($save);
    }
}

